<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>camray: Camera Array Depth Mapping</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">camray
   </div>
   <div id="projectbrief">Depth mapping algorithms using a camera array</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('index.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Camera Array Depth Mapping </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><dl class="section author"><dt>Authors</dt><dd>Brian Fehrman and Scott Logan</dd></dl>
<dl class="section date"><dt>Date</dt><dd>April 17 2013</dd></dl>
<h1><a class="anchor" id="course_infromation"></a>
Course Information</h1>
<dl class="section user"><dt>Instructor:</dt><dd>Dr. Weiss</dd></dl>
<dl class="section user"><dt>Course:</dt><dd>Image Processing Spring 2013</dd></dl>
<dl class="section user"><dt>Location:</dt><dd>South Dakota School of Mines and Technology</dd></dl>
<h1><a class="anchor" id="program_section"></a>
Program Information</h1>
<p>This main goal of this program is to allow a user to generate to generate depth maps from an array of cameras. The individual depth maps are then combined in to a single depth map that will hopefully contain more accurate information than any individual depth map alone.</p>
<p>Currently the program could potentially handle up to a 3x3 array of cameras or any connected subset of a 3x3 grid (i.e., 1x1, 1x2, 2x2, 2x1, etc). It was originally designed around a 2x2 array. With some slight modifications to the math used for the difference maps the program could be made to handle an NxM array of cameras that would only be limited by bandwidth issues.</p>
<p>The program has 5 main steps: </p>
<pre class="fragment">  1.) Initialize Camera Settings
       
  2.) Capture Images

  3.) Calibrate Camera

  4.) Match Pixels in Image Pairs

  5.) Generate Depth Maps</pre><p> Each of these five steps are elaborated further in their resepective files. Any of these steps can be enabled/disabled through the use of the camera_array_settings.xml file. Settings for each of the 5 steps listed above can also be controled by updating the camera_array_settings.xml file. The settings file contains many comments in an attempt to help the user easily understand each setting.</p>
<h1><a class="anchor" id="settings_section"></a>
Required Settings</h1>
<pre class="fragment">  [basic_settings][run_init_cams] - disable/enable camera settings initialization (int)
  [basic_settings][run_capture] - disable/enable camera capture (int)
  [basic_settings][run_calibration] - disable/enable camera calibration (int)
  [basic_settings][run_matching] - disable/enable iamge matching (int)
  [basic_settings][run_depth] - disable/enable depth map generation (int)
  [cam_settings] - settings for the camera settings initialization (xml node)
  [cap_settings] - settings for the camera capture (xml node)
  [calib_settings] - settings for camera calibration (xml node)
  [match_settings] - settings for matching (xml node)
  [depth_settings] - settings for depth map generation (xml node)
* </pre><h1><a class="anchor" id="compile_section"></a>
Compiling and Usage</h1>
<dl class="section user"><dt>Compiling Instructions:</dt><dd>This program uses OpenCV, OpenMP, and uvcdynctrl. Please make sure your system has these dependencies installed. OpenMP isn't completely necessary but the program is going to run substantially slower without it. The program will compile if you don't have uvcdynctrl but it is going to crash if you try to run the Initialize Camera Settings step.</dd></dl>
<p>To compile, from within the top level program directory (contains the folders src, include, xml, etc.) </p>
<pre class="fragment">  make clean
  make all</pre><p> Make sure the Makefile points to your include and lib directories which contain opencv. </p>
<dl class="section user"><dt>Usage:</dt><dd></dd></dl>
<pre class="fragment">  ./bin/camera_array [settings_file_name]</pre><h1><a class="anchor" id="todo_bugs_modification_section"></a>
Todo, Bugs, and Modifications</h1>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd><p class="startdd">Add feature based mathching </p>
<p>Add Qt Front End </p>
<p class="enddd">Add GPU Acceleration </p>
</dd></dl>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Tue Apr 23 2013 23:15:47 for camray by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.3.1 </li>
  </ul>
</div>
</body>
</html>
